In a traditional data center, “software stacks” that define the workloads being hosted are bound to the physical machines hosting the workload. Just as diversity exists in such workloads, diversity also exists in the configuration of the machines, such as in their operating systems, drivers, storage interfaces, file systems, applications, etc. Given the tendency of enterprises to standardize on the operating environments of these machines (Linux, Windows, etc), correlation from one configuration to another does not transfer well when machines have vastly different configurations. When correlation does exist, on the other hand, significant portions of software stacks can be found replicated across the data center.
For instance, consider a data center that hosts a web farm of a thousand or more web servers, such as might be found in a “cloud” computing context. In turn, consider a common Linux based application stack—the so called LAMP (Linux, Apache, MySQL, PHP) stack—on many of the servers. Even if the workloads of the machines are different, each web server with LAMP stack executes the same identical software. In turn, multiple copies of the LAMP stack exist in the data center which leads to storage having identical stacks. This wastes capacity. Furthermore, if any of the software needs to be patched, every instance of the software stack needs to be patched which adds complexity, In the further situation of other servers not having a LAMP stack, situations remain where a significant portion of the software stack may be nonetheless identical across the workloads. For instance, completely separate workloads may still have commonality in a Linux-based architecture with Linux being a common operating system cross all workloads being hosted. Ultimately, managing and maintaining these software stacks individually, e.g., applying all the relevant patches, contributes significantly to the operational complexity of managing the data center. With the advent of virtual computing, the problem is only exacerbated since many virtual machines can be now guessed on a single hardware platform, including each with its own operating system, drivers, interfaces, applications, etc., which all may be vastly different or identical to one another.
Accordingly, a need exists in the art of computing for less administrative and storage costs. The need further contemplates a system that can provide commonality to ease coordination and management activities. Even more, the need should extend to virtual environments, each with many domains per a single hardware platform. Any improvements along such lines should further contemplate good engineering practices, such as ease of implementation, unobtrusiveness, stability, etc.